账号与权限管理 ============== 创建合约账号 ^^^^^^^^^^^^ 1. 快速创建一个合约账号 .. code-block:: bash :linenos: ./xchain-cli account new —account 1111111111111111 --fee 1000 -H 127.0.0.1:37101 2. 按照json文件创建一个合约账号 .. code-block:: bash :linenos: ./xchain-cli account new —desc account.json --fee 1000 -H 127.0.0.1:37101 account.json模版如下: .. code-block:: json :linenos: { "module_name": "xkernel", "method_name": "NewAccount", "args" : { "account_name": "1111111111111111", "acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}" } } 管理合约账号/合约方法ACL ^^^^^^^^^^^^^^^^^^^^^^^^ 1. 重新设置一个账号/合约方法的ACL 走multisig命令 step1: 准备好ACL的json文件,该json文件中有新的ACL配置,文件名记为acl_new.json step2: 针对acl_new.json生成原始交易 先查看合约账号余额是否充足: .. code-block:: bash :linenos: ./xchain-cli account balance XC1111111111111111@xuper 如果不足,可以把当前个人账户(data/keys/address)的资产转移一些给合约账户 .. code-block:: bash :linenos: ./xchain-cli multisig gen --desc acl_new.json --from XC1111111111111111@xuper step3: 使用旧有的acl权限模型对新生成的原始交易做签名(假设旧有的权限模型的成员包括bob和alice) .. code-block:: bash :linenos: ./xchain-cli multisig sign --keys data/account/bob --output bob.sign ./xchain-cli multisig sign --keys data/account/alice --output alice.sign step4:将签名后的交易post出去 .. code-block:: bash :linenos: ./xchain-cli multisig send --tx tx.out bob.sign,alice.sign bob.sign,alice.sign 2. 查询一个账号的Acl .. code-block:: bash :linenos: ./xchain-cli acl query —account XC1111111111111111@xuper 3. 查询一个合约方法的Acl .. code-block:: bash :linenos: ./xchain-cli acl query —contract contractName —method methodName 常见问题 ^^^^^^^^ 1. 创建合约账户,重置合约账户/合约方法的ACL时,配置文件的案例: a. 创建合约账号,配置文件案例如下: .. code-block:: json :linenos: { "module_name": "xkernel", "method_name": "NewAccount", "args" : { "account_name": "1111111111111111", "acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}" } } b. 重置合约账户的ACL,配置文件案例如下: .. code-block:: json :linenos: { "module_name": "xkernel", "method_name": "SetMethodAcl", "args" : { "account_name": "1111111111111111", "acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}" } } c. 重置合约方法的ACL,配置文件案例如下: .. code-block:: json :linenos: { "module_name": "xkernel", "method_name": "SetAccountAcl", "args" : { "contract_name": "math", "method_name": "transfer", "acl": "{\"pm\": {\"rule\": 1,\"acceptValue\": 0.6},\"aksWeight\": {\"AK1\": 0.5,\"AK2\": 0.5}}" } }